function init () {}

function port_checker (e) {
    var c = e.keyCode;
    if (e.altKey || e.shiftKey || e.ctrlKey) {
        return true;
    }
    if (c === 0x08 || c === 0x09 || c === 0x2e) {
        // back-space, tab or del typed
        return true;
    } else if (c === 0x25 || c === 0x27) {
        // left or right arrow
        return true;
    } else if ((c >= 0x30 && c <= 0x39) || (c >= 0x60 && c <= 0x69)) {
        // numbers
        if (this.value.length < 4) {
            // 加速器，当文本框的值的长度 < 4，肯定不会超 65535
            return true;
        }

        if (c >= 0x60 && c <= 0x69) {           // 小键盘
            c -= 0x30;
        }
        c = String.fromCharCode (c);            // 获取当前输入的字符
        var v = this.value, s = '';
        var p = this.selectionStart;            // 光标所在位置

        if (p === 0) {
            // 光标在最前面，那么如果输入有效的话，为 c|v
            s = c + v;
        } else if (p === v.length) {
            // 光标在最右面, 如果输入有效的话，格式为 v|c
            s = v + c;
        } else {
            // 光标在中间，型为 xxx|c|yyy
            for (var i = 0; i < p; i ++) {
                s += v[i];
            }
            s += c;
            for (i = p; i < v.length; i ++) {
                s += v[i];
            }
        }

        // 计算目标值
        v = parseInt (s, 10);
        if (isNaN (v)) {
            return false;   // this will not be happen
        }
        if (v > 65535) {
            // the port range over-flowed
            return false;
        }
        return true;
    }
    // others are not accept
    return false;
}